.NETコアMVCでビューをPDFに変換する方法
.NET Core MVCビューをPDFに変換するには、.cshtmlファイルを高品質のPDFドキュメントに変換するIronPDFのRenderRazorViewToPdfメソッドを使用します。
ビューは、ウェブアプリケーションでHTMLマークアップを生成するために使用されるASP.NETフレームワークのコンポーネントです。 これは、ASP.NET MVCおよびASP.NET Core MVCアプリケーションで一般的に使用されているModel-View-Controller(MVC)パターンの一部です。 ビューは、HTMLコンテンツを動的にレンダリングすることで、ユーザーにデータを表示する役割を担っています。 ビューは通常、サーバーベースのコードをウェブページに埋め込むためのマークアップ構文である Razor 構文を使用しており、データ駆動型の PDF 文書を作成するための強力なツールとなっています。
クイックスタート: ASP.NET CoreでCSHTMLをPDFに変換する。
IronPDF を使用して ASP.NET Core MVC ビューを PDF に変換します。 1行のコードで、".cshtml"ファイルをPDF文書にレンダリングします。 ダイナミックなHTMLビューからシームレスにPDFを生成するために、この機能をMVCアプリケーションに直接統合してください。 このガイドに従って環境をセットアップし、変換を開始してください。
今すぐ NuGet で PDF を作成してみましょう:
NuGet パッケージ マネージャーを使用して IronPDF をインストールします
このコード スニペットをコピーして実行します。
// using IronPdf.Extensions.Mvc.Core new IronPdf.ChromePdfRenderer().RenderRazorViewToPdf(HttpContext, "Views/Home/Report.cshtml", model).SaveAs("report.pdf");実際の環境でテストするためにデプロイする
ASP.NET Core Web App MVC(Model-View-Controller)は、ASP.NET Coreを使用してWebアプリケーションを構築するためにMicrosoftが提供するWebアプリケーションフレームワークです。
- モデル:データとビジネスロジックを表現し、データの相互作用を管理し、データソースと通信します。
- ビュー:ユーザーインターフェイスを提示し、データを表示し、ユーザーに情報をレンダリングします。
- コントローラ:ユーザーの入力を処理し、リクエストに応答し、モデルと通信し、モデルとビューのインタラクションを編成します。
IronPdfはASP.NET Core MVCプロジェクト内のビューから直接PDFファイルを作成することができます。 CSSスタイリング、JavaScript実行、カスタムフォントなどの最新の機能をサポートし、ASP.NET Core MVCでPDFを簡単に生成できるようにします。
最小限のワークフロー(5ステップ)
- ASP.NETコアMVCでビューをPDFに変換するためのC#ライブラリをダウンロードする。
- データ用のモデルクラスを追加する
- HomeController.cs"ファイルを編集し、
RenderRazorViewToPdfメソッドを使用してください。 - 新しいビューを作成し、PDFをレンダリングするために".cshtml "ファイルを編集します。
- クイックスタート用のサンプルプロジェクトをダウンロード
IronPDF拡張機能にはどのようなパッケージが必要ですか?
IronPdf.Extensions.Mvc.Coreパッケージは、メインのIronPdfパッケージの拡張です。 IronPdf.Extensions.Mvc.CoreとIronPdfパッケージの両方が、ASP.NET Core MVCでPDFドキュメントにビューをレンダリングするために必要です。 拡張パッケージは、ASP.NET Coreの依存性注入システムとRazorビューレンダリングパイプラインと統合するための特定の機能を提供します。
インストール-パッケージ IronPdf.Extensions.Mvc.Core
なぜIronPDFと拡張パッケージの両方が必要なのですか? メインのIronPDFパッケージはコアPDFレンダリングエンジンと基本機能を含み、Extensions.Mvc.CoreパッケージはASP.NET Core MVCのビューレンダリングシステムとの統合を提供します。 このように分けることで、モジュール性を高め、プロジェクトのタイプに必要な特定の機能のみを含めることができます。 この拡張パッケージには、PDF 生成の前に Razor ビューを HTML に変換するために必要な `IRazorViewRenderer` インターフェイスと実装が含まれています。 ### どのNuGetパッケージのバージョンを使用すべきですか? 互換性を確保するために、常にIronPdfと`IronPdf.Extensions.Mvc.Core`のバージョンを一致させてください。 最新の安定リリースとバージョンの互換性情報については、NuGetパッケージのドキュメントを確認してください。 アップデートの際には、適切な機能を維持するために、両方のパッケージが一緒にアップデートされるようにしてください。 ### よくあるインストール時の問題とは
よくあるインストールの問題には、コアパッケージと拡張パッケージのバージョンの不一致、依存関係の欠落、プラットフォーム固有の要件などがあります。 問題が発生した場合は、プロジェクトがサポートされている.NETバージョンをターゲットにしていることを確認し、トラブルシューティングの手順については、インストールの概要を確認してください。Install with NuGet
インストール-パッケージ IronPdf.Extensions.Mvc.Core
IRazorViewRenderer`、`Views/Home/Persons.cshtml` へのパス、必要なデータを含むリストを RenderRazorViewToPdf/code> メソッドに渡します。 ユーザーは、`RenderingOptions`を使用して、カスタムテキストの追加、結果のPDFへのHTMLヘッダーとフッターの追加、カスタムマージンの定義、ページ番号の適用など、さまざまな機能にアクセスできます。 より高度なレンダリングオプションについては、レンダリングオプションのドキュメントを参照してください。
PDFドキュメントは、以下のコードを使ってブラウザで見ることができます:`File(pdf.BinaryData, "application/pdf")`. ただし、ブラウザでPDFを表示した後にダウンロードすると、PDF文書が破損します。
```csharp
using IronPdf.Extensions.Mvc.Core;
using Microsoft.AspNetCore.Mvc;
using System.Diagnostics;
using ViewToPdfMVCCoreSample.Models;
namespace ViewToPdfMVCCoreSample.Controllers
{
public class HomeController : Controller
{
private readonly ILogger _logger;
private readonly IRazorViewRenderer _viewRenderService;
private readonly IHttpContextAccessor _httpContextAccessor;
public HomeController(ILogger logger, IRazorViewRenderer viewRenderService, IHttpContextAccessor httpContextAccessor)
{
_logger = logger;
_viewRenderService = viewRenderService;
_httpContextAccessor = httpContextAccessor;
}
public IActionResult Index()
{
return View();
}
public async Task Persons()
{
// Example list of persons
var persons = new List
{
new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
};
// Check if the request method is POST
if (_httpContextAccessor.HttpContext.Request.Method == HttpMethod.Post.Method)
{
// Create a new PDF renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Configure rendering options for better output
renderer.RenderingOptions.MarginTop = 40;
renderer.RenderingOptions.MarginBottom = 40;
renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Portrait;
renderer.RenderingOptions.Title = "Persons Report";
// Render View to PDF document
PdfDocument pdf = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Persons.cshtml", persons);
Response.Headers.Add("Content-Disposition", "inline");
// Output PDF document
return File(pdf.BinaryData, "application/pdf", "viewToPdfMVCCore.pdf");
}
return View(persons);
}
public IActionResult Privacy()
{
return View();
}
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
}
}
```
`RenderRazorViewToPdf` メソッドを使用した後、さらなる拡張や変更が可能な `PdfDocument` オブジェクトを受け取ります。 必要に応じて、PDFをPDF/AまたはPDF/UA形式に変換したり、生成されたPDFに電子署名を追加したり、PDF文書を結合したり分割したりすることができます。 さらに、このライブラリを使用すると、PDFファイルへのページ回転、注釈またはブックマークの挿入、ユニークなウォーターマークの印刷が可能です。
### IRazorViewRendererサービスとは何ですか?
`IRazorViewRenderer`は`IronPdf.Extensions.Mvc.Core`パッケージによって提供されるサービスインターフェイスで、RazorビューのHTMLへの変換を処理します。 これはASP.NET Coreのビューエンジンと統合され、.cshtmlファイルと関連するモデルを処理し、すべてのRazor構文を実行し、IronPDFがPDFに変換する最終的なHTMLを生成します。
### なぜレンダリング前に POST メソッドをチェックするのですか
POSTチェックにより、フォーム送信により明示的に要求された場合にのみPDF生成が行われるようにします。 これは、ページロード時に誤ってPDFが生成されるのを防ぎ、同じアクションでHTMLビュー(GET時)とPDFダウンロード(POST時)の両方を提供することを可能にします。 このパターンはRESTfulの原則に従い、より良いユーザー体験を提供します。
### PDF出力をカスタマイズするにはどうすればよいですか?
IronPDFは`RenderingOptions`プロパティを通して広範なカスタマイズオプションを提供します。 以下は、より高度な設定の例です:
```csharp
// Advanced rendering configuration example
var renderer = new ChromePdfRenderer();
// Page setup
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
// Headers and footers with merge fields
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
Height = 25,
HtmlFragment = "Page {page} of {total-pages}"
};
// JavaScript execution delay for dynamic content
renderer.RenderingOptions.WaitFor = new WaitFor()
{
RenderDelay = 500, // Wait 500ms for JS execution
NetworkIdle = NetworkIdleTypes.NetworkIdle0 // Wait for network requests
};
// Apply watermark
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
DrawDividerLine = true,
CenterText = "CONFIDENTIAL",
Font = new FontTypes() { FontSize = 16 }
};
```
### よくあるコントローラーのエラーとは
よくあるエラーには、サービスが適切に注入されていない場合のヌル参照例外、ビューの場所を指定する際のパスの問題、モデルのバインディングの問題などがあります。 すべての必要なサービスが`Program.cs`に登録されていることを確認し、ビューの場所を指定するときはプロジェクトルートからの相対パスを使用してください。 トラブルシューティングのために、開発モードで詳細なエラーメッセージを有効にします。
## どのようにビューを追加しますか?
- 新しく追加された`Person`アクションを右クリックし、"Add View "を選択します。
[VisualStudioのコンテキストメニューで、Persons()メソッドを右クリックしたときに強調表示される"ビューを追加..."オプション](/static-assets/pdf/how-to/cshtml-to-pdf-mvc-core/right-click-on-Persons.webp)。
- 新しいスキャフォールドアイテムには"Razor View"を選んでください。
[VisualStudioにRazorビューダイアログを追加し、レイアウトオプションでリストテンプレートと人物モデルクラスの選択を表示する](/static-assets/pdf/how-to/cshtml-to-pdf-mvc-core/select-scaffold.webp)。
- リスト"テンプレートと`Person`モデルクラスを選択してください。
[VisualStudioでRazorビューの追加ダイアログを表示し、レイアウトオプションでリストテンプレートとPersonモデルクラスを選択する](/static-assets/pdf/how-to/cshtml-to-pdf-mvc-core/add-view.webp)。
これにより、`Persons`という名前の.cshtmlファイルが作成されます。
- Views "フォルダ -> "Home "フォルダ -> `Persons.cshtml`ファイルに移動します。
`Persons`アクションを呼び出すボタンを追加するには、以下のコードを使用してください:
```html
@using (Html.BeginForm("Persons", "Home", FormMethod.Post))
{
}
```
### なぜPDF生成にFormMethod.Postを使うのですか
PDF生成に`POST`を使用することは、動作を明示し、ブラウザの更新やブックマークされたURLからの不要なPDF生成を防ぐことによって、Webのベストプラクティスに従っています。 `GET`リクエストはidempotent(サーバーの状態を変更しない)でなければなりませんが、`POST`リクエストは結果を生成するアクションを示します。
### どのように PDF 印刷ボタンをスタイルできますか?
CSSクラスを使用して印刷ボタンをスタイル設定し、JavaScriptを使用してユーザーエクスペリエンスを向上させます。 こちらは強化版です:
```html
@using (Html.BeginForm("Persons", "Home", FormMethod.Post, new { @class = "pdf-form" }))
{
}
```
PDFに最適なビューテンプレートは?
`List`と`Details`テンプレートは、構造化されたレイアウトを提供するため、PDF生成に特に適しています。 PDF出力用に特別に設計されたカスタムテンプレートは、多くの場合、最良の結果をもたらします。 画面表示ではなく印刷レイアウトに最適化し、ナビゲーション要素を削除してコンテンツの表示に焦点を当てた専用のPDFビューを作成することを検討してください。
## トップナビゲーションバーにセクションを追加するにはどうすればよいですか?
- 同じ"Views"フォルダ内の"Shared"フォルダ -> `_Layout.cshtml`に移動します。 `Person`ナビゲーションアイテムを`Home`の後に配置してください。
`asp-action`属性の値がファイル名と正確に一致していることを確認してください。
```html
```
### なぜasp-actionは正確に一致する必要があるのですか?
`asp-action`属性は、ASP.NET Coreのタグヘルパーを使用して、ルーティング設定に基づいて正しいURLを生成します。 完全一致は、リンクが正しいコントローラアクションに解決することを保証します。 不一致は、404エラーや意図しないアクションへのルーティングにつながります。 タグヘルパーは大文字と小文字を区別し、コントローラ内のメソッド名と正確に一致する必要があります。
### ナビゲーション リンクが一致しない場合はどうなりますか?
ナビゲーションリンクがコントローラのアクションと一致しない場合、ユーザーは404エラーに遭遇したり、正しくないページに誘導されたりします。 開発中、ASP.NET Coreの開発者例外ページには、詳細なルーティングエラーが表示されます。 本番環境では、ユーザーには一般的なエラーページが表示されます。 ユーザーエクスペリエンスが損なわれないように、ナビゲーションリンクがコントローラのアクション名と正確に一致していることを常に確認してください。
## Program.csファイルを編集するには?
`IHttpContextAccessor` と `IRazorViewRenderer` インターフェイスを依存性注入 (DI) コンテナーに登録します。 以下のコードを参考にしてください。
```csharp
using IronPdf.Extensions.Mvc.Core;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllersWithViews();
builder.Services.AddSingleton();
builder.Services.AddSingleton();
// Register IRazorViewRenderer here
builder.Services.AddSingleton();
// Optional: Configure IronPDF license if you have one
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
```
### なぜサービスをシングルトンとして登録するのですか?
シングルトン サービスは一度作成されるとアプリケーションのライフタイムを通して再利用されるため、`IRazorViewRenderer`のようなステートレス サービスでは効率的です。 このパターンでは、ビューのレンダリングサービスがリクエスト固有の状態を保持しないため、メモリのオーバーヘッドが削減され、パフォーマンスが向上します。 `IHttpContextAccessor`は、異なるサービス ライフタイムにわたってアクセスできるように、シングルトンでなければなりません。
### ITempDataProviderは何に使用されますか?
`ITempDataProvider`は、リクエスト間の一時的なデータ保存を可能にします。 PDF生成の文脈では、ビューをPDFにレンダリングするときに、ビューの状態が適切に維持されるようにします。 `CookieTempDataProvider`は、この一時的なデータを暗号化されたクッキーに保存し、状態管理のための安全なメカニズムを提供します。
### スコープ付きサービスを代わりに使用できますか?
シナリオによってはスコープされたサービスを使用することもできますが、`IRazorViewRenderer`はリクエスト固有の状態を保持しないため、シングルトンとして最適です。 スコープされたサービスを使用すると、リクエストごとに新しいインスタンスが作成され、メモリ使用量が増加します。 ただし、スコープされたサービスをビューに注入する必要がある場合は、実行時エラーを避けるために、適切なサービス寿命管理を確実に行ってください。
#### プロジェクトを実行する
プロジェクトを実行し、PDFドキュメントを生成する方法を示します。 アプリケーションを実行したら、トップナビゲーションメニューを使って`Persons`ページに移動し、`Print Person`ボタンをクリックしてPDFを生成してダウンロードしてください。
## ASP.NETコアMVCプロジェクトはどこでダウンロードできますか?
このガイドの完全なコードをダウンロードしてください。これは、ASP.NET Core Web App(Model-View-Controller)プロジェクトとしてVisual Studioで開くことができるzipファイルとして提供されます。
[ASP.NET Core MVCサンプルプロジェクトをダウンロード](/static-assets/pdf/how-to/cshtml-to-pdf-mvc-core/ViewToPdfMVCCoreSample.zip)
### サンプルプロジェクトには何が含まれていますか?
サンプルプロジェクトには、.NET Core MVCアプリケーションとIronPDF統合が完全に構成され、ビューからPDFへの変換が実演されています。 `Person`モデル、PDF生成ロジックを持つ`HomeController`、適切なRazor構文を持つ`Persons`ビュー、および`Program.cs`内のすべての必要なサービス登録が含まれています。 このプロジェクトには、PDF出力に最適化されたスタイリングとレイアウトの構成例も含まれています。
### どの Visual Studio のバージョンを使用すればよいですか?
.NET 6以上のプロジェクトで最高の体験を得るには、Visual Studio 2022(バージョン17.0以降)を推奨します。 C#拡張機能を持つVisual Studio Codeは、クロスプラットフォーム開発にも適しています。 ASP.NETとWeb開発ワークロードがインストールされていることを確認してください。 プロジェクトは、デフォルトで.NET 6.0を対象としていますが、新しいバージョンに更新することも可能です。
### プロジェクトのセットアップに関する問題のトラブルシューティングはどうすればよいですか?
よくあるセットアップの問題には、NuGetパッケージの欠落、.NET SDKバージョンの誤り、設定の問題などがあります。 まず、`dotnet restore` を使用して、または Visual Studio のパッケージ マネージャを使用して、NuGet パッケージをリストアします。 `dotnet --version`を使用して、.NET SDKのバージョンがプロジェクトの要件と一致していることを確認してください。 ライセンスの問題については、ライセンスキーのドキュメントを参照してください。 レンダリングの問題が発生した場合は、トラブルシューティングガイドで解決策を確認してください。
次に何ができるのかを見てみましょうか? 私たちのチュートリアルページをご覧ください: [PDFの変換](https://ironpdf.com/tutorials/convert-pdf/)
よくある質問
ASP.NET Core MVCでCSHTMLビューをPDFに変換する最も簡単な方法は何ですか?
最も簡単な方法はIronPDFのRenderRazorViewToPdfメソッドを使うことで、.cshtmlファイルをたった一行のコードでPDFドキュメントに変換することができます。次のように呼び出すだけです: new IronPdf.ChromePdfRenderer().RenderRazorViewToPdf(HttpContext, "Views/Home/Report.cshtml", model).SaveAs("report.pdf");
ASP.NET Core MVC でビューを PDF に変換するには、どの NuGet パッケージが必要ですか?
2つのパッケージが必要です:IronPdf(メインパッケージ)とIronPdf.Extensions.Mvc.Core(拡張パッケージ)です。拡張パッケージはASP.NET Coreの依存性注入システムとRazorビューレンダリングパイプラインと統合するための特定の機能を提供します。
CSHTMLをPDFに変換する際、CSSスタイリングやJavaScriptを適用できますか?
はい、IronPDFはビューをPDFにレンダリングする際、CSSスタイリング、JavaScriptの実行、カスタムフォントを完全にサポートします。これにより、レスポンシブCSSやダイナミックJavaScriptコンテンツなど、PDFがWebビューと同じ外観と機能を維持できるようになります。
私のASP.NET Core MVCプロジェクトでViewからPDFへの変換を実装する主な手順は何ですか?
ワークフローには5つのステップがあります:1) IronPDFとそのMVC Coreエクステンションをダウンロードする、2) データのモデルクラスを追加する、3) RenderRazorViewToPdfメソッドを使用するようにコントローラーを編集する、4) PDFレンダリングのためにビュー(.cshtmlファイル)を作成または修正する、5) PDFを生成するためにアプリケーションを実行する。
MVC パターンは、Views からの PDF 生成でどのように機能しますか?
ASP.NET Core MVCでは、モデルはデータとビジネスロジックを含み、ビュー(.cshtmlファイル)はUIを表示しデータを表示し、コントローラーはリクエストを処理し、ビューからのPDF生成をオーケストレーションするためにIronPDFのRenderRazorViewToPdfメソッドを使用します。

